home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu620.dms / pu620.adf / Utilities / STC4103.LHA / StoneCracker / sources / Cache.S next >
Text File  |  1993-12-07  |  2KB  |  93 lines

  1. ;
  2. ; Cache.S - set caches properly. Taken from kick2.04 ROM.
  3. ; Use as Exec/CacheControl() function.
  4. ;
  5. ;
  6. ;
  7. ; old state  =CacheControl( bits, mask )
  8. ; d0                        d0    d1
  9. ;
  10.  
  11. **
  12. **  Bit Definition Macro
  13. **
  14. **  Given:
  15. **    BITDEF    MEM,CLEAR,16
  16. **
  17. **  Yields:
  18. **    MEMB_CLEAR  EQU 16            ; Bit number
  19. **    MEMF_CLEAR  EQU 1<<16            ; Bit mask
  20. **
  21.  
  22. BITDEF        MACRO   ; prefix,&name,&bitnum
  23.         BITDEF0 \1,\2,B_,\3
  24. \@BITDEF    SET     1<<\3
  25.         BITDEF0 \1,\2,F_,\@BITDEF
  26.         ENDM
  27.  
  28. BITDEF0     MACRO   ; prefix,&name,&type,&value
  29. \1\3\2        EQU     \4
  30.         ENDM
  31.  
  32.  
  33. ******* Selected bit definitions for Cache manipulation calls **************
  34.  
  35.     BITDEF    CACR,EnableI,0        ;Enable instruction cache
  36.     BITDEF    CACR,FreezeI,1        ;Freeze instruction cache
  37.     BITDEF    CACR,ClearI,3        ;Clear instruction cache
  38.     BITDEF    CACR,IBE,4        ;Instruction burst enable
  39.     BITDEF    CACR,EnableD,8        ;68030 Enable data cache
  40.     BITDEF    CACR,FreezeD,9        ;68030 Freeze data cache
  41.     BITDEF    CACR,ClearD,11        ;68030 Clear data cache
  42.     BITDEF    CACR,DBE,12        ;68030 Data burst enable
  43.     BITDEF    CACR,WriteAllocate,13    ;68030 Write-Allocate mode (must
  44.                     ;always be set)
  45.     BITDEF    CACR,CopyBack,31    ;Master enable for copyback caches
  46.  
  47.  
  48.     BITDEF    DMA,Continue,1        ;Continuation flag for CachePreDMA
  49.     BITDEF    DMA,NoModify,2        ;Set if DMA does not update memory
  50.  
  51.  
  52. ******************************************************************************
  53. *
  54. *
  55. *
  56.  
  57. F80C4C:    movem.l    d2-d4/a5,-(a7)
  58.     moveq    #0,d3
  59.     move.w    $128(a6),d4    ; Execbase->AttnFlags
  60.     btst    #1,d4
  61.     beq.s    F80C6C
  62.     and.l    d1,d0
  63.     ori.w    #$808,d0
  64.     not.l    d1
  65.     lea    F80C74(pc),a5
  66.     jsr    -$1E(a6)    ; _LVOSuperVisor
  67. F80C6C:    move.l    d3,d0
  68.     movem.l    (a7)+,d2-d4/a5
  69.     rts
  70.  
  71. F80C74: ori.w    #$700,sr
  72.     movec    cacr,d2        ; $4E7A2002
  73.     btst    #3,d4
  74.     beq.s    F80C88
  75.     swap    d2
  76.     ror.w    #8,d2
  77.     rol.l    #1,d2
  78. F80C88:    move.l    d2,d3
  79.     and.l    d1,d2
  80.     or.l    d0,d2
  81.     btst    #3,d4
  82.     beq.s    F80CA4
  83.     ror.l    #1,d2
  84.     rol.w    #8,d2
  85.     swap    d2
  86.     andi.l    #$80008000,d2
  87.     nop
  88.     cpusha    bc        ; $F4F8
  89. F80CA4:    nop
  90.     movec    d2,cacr        ; $4E7B2002
  91.     nop
  92.     rte
  93.